{{tag>conception_electronique CAO}}
----
====== Simulation VHDL ======
{{ http://gtkwave.sourceforge.net/splash_512.gif?300|GTKWave}}
Cette page s'adresse à ceux qui débutent en [[wpfr>VHDL|Vhdl]] ou bien qui recherchent une solution libre de développer leurs projets. Elle s'appuie sur les logiciels libres suivants: 
  * [[http://ghdl.free.fr|GHDL]] : logiciel de simulation de code VHDL
  * [[http://gtkwave.sourceforge.net/|GtkWave]] : logiciel de visualisation de simulation

FIXME Un petit explicatif de ce qu'est vhdl serait un plus plutôt qu'un simple lien wikipedia

=====Pré-requis=====
  * Disposer des [[:sudo|droits d'administration]],
  * Disposer d'une connexion à Internet configurée et activée.

===== Installation =====
[[:tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt>ghdl,gtkwave|ghdl gtkwave]]**

===== Utilisation ======
Depuis un [[:terminal]], placez vous dans votre répertoire de travail
<code>cd le/chemin/vers/mon/repertoire/Repertoire_de_Travail</code>

==== Analyse du code VHDL ====
Permet de vérifier la syntaxe du code, les erreurs sont affichées dans le terminal.
<code>ghdl -a monFichier.vhd</code>

==== Compilation ====
Cette étape ne peut se faire qu'une fois le code vérifié et corrigé. Si ce n'est pas le cas, ghdl vous le fait remarquer.\\
On crée ici un fichier exécutable.
<code>ghdl -e monFichier</code>
<note>Attention, il ne faut pas indiquer d'extension à //monFichier//</note>

==== Simulation ===
Un fois l'exécutable créé, on spécifie un temps de simulation pour l'exécuter. //
Remplacez XX par la durée de votre simulation.//
Le fichier vcd créé va nous servir à visualiser nos chronogrammes via GTKWave.
<code>./monFichier --stop-time=XXns --vcd=monFichierSimulation.vcd</code>

==== Visualisation ====
On lance le logiciel gtkwave en lui spécifiant notre fichier de simulation.
<code>gtkwave monFichierSimulation.vcd &</code>
<note>L'ajout des signaux au chronogramme se fait par simple double clic</note>

<note important>Pour ceux qui ont l'habitude de travailler directement sur des cibles type FPGA, dans le cas d'une simulation, il vous faudra impérativement simuler vos signaux d'horloge

Exemple de simulation d'une clock :
<code>
signal clk_simu : std_logic := '0';
constant demiPeriode : time := 10 ns; -- pour une periode de 20ns -> freq 50MHz

p_clk_simu : process is
     begin  
          clk_simu <= '1' after demiPeriode, '0' after 2*demiPeriode;
          wait for 2*demiPeriode; 
 end process p_clk_simu;  
</code>
 </note>

===== Désinstallation =====
Pour désinstaller ces applications, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer les paquets]] **ghdl** et **gtkwave**. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.

----
//Contributeurs : jefix, fabux //